#ifndef POLYGONDATAITERATORS_H
#define POLYGONDATAITERATORS_H

#endif // POLYGONDATAITERATORS_H

#include <QVector>
#include <QStandardItem>
#include <QSharedPointer>
#include <QMap>

struct PolygonItem;
class PolygonData;


class ElementIterator
{
protected:
    QSharedPointer<PolygonData> _data;
    QMap <int, PolygonItem*>::iterator _iterator;
public:
    virtual void begin() = 0;
    virtual bool isFinished() = 0;
    virtual int currentKey();
    virtual void next();
    virtual ~ElementIterator() {}
};

class LoopIterator: public ElementIterator
{
private:
    LoopIterator();
public:
    virtual void begin();
    virtual bool isFinished();
    friend class PolygonData;
};

class PicketIterator: public ElementIterator
{
private:
    PicketIterator();
public:
    virtual void begin();
    virtual bool isFinished();
    friend class PolygonData;
};

class EmfIterator: public ElementIterator
{
private:
    EmfIterator();
public:
    virtual void begin();
    virtual bool isFinished();
    friend class PolygonData;
};
